import java.util.Arrays;
public class JavaKE7 {

    //冒泡排序
    public static void bubbleSort(int[] arr){
        for (int i=0;i<arr.length-1;i++) {
            for (int j = 0; j < arr.length - i - 1; j++) {
                if (arr[j]>arr[j+1]) {
                    //交换元素
                    int temp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                }
            }
        }
    }

    //选择排序
    public static void selectionSort(int[] arr){
        for (int i=0;i<arr.length-1;i++) {
            int minIndex = i;
            for (int j = i + 1; j < arr.length; j++) {
                if (arr[j] < arr[minIndex]) {
                    minIndex = j;
                }
            }

            int temp = arr[minIndex];
            arr[minIndex] = arr[i];
            arr[i] = temp;
        }
    }

    public static void printArray(int[] arr){
        System.out.println(Arrays.toString(arr));
    }

    public static void print2DArray(int[][] arr){
        for (int[] row:arr){
            printArray(row);
        }
    }

    public static void sort2DArray(int[][] arr){
        for (int[] row:arr) {
            Arrays.sort(row);
        }
    }



    public static void main(String[] args){
        int[] numbers={5,2,8,1,9,3,7};
        System.out.println("原始一维数组：");
        printArray(numbers);

        //使用冒泡排序
        bubbleSort(numbers);
        System.out.println("冒泡排序后：");
        printArray(numbers);

        //重置数组
        numbers =new int[]{5,2,8,1,9,3,7};
        System.out.println("\n重置后的数组：");
        printArray(numbers);

        //使用选择排序
        selectionSort(numbers);
        System.out.println("选择排序后：");
        printArray(numbers);

        //使用Arrays.sort（）
        numbers=new int[]{5,2,8,1,9,3,7};
        System.out.println("\n重置后的数组：");
        printArray(numbers);
        Arrays.sort(numbers);
        System.out.println("使用Arrays.sort（）排序后：");
        printArray(numbers);

        //使用Arrays.binarySearch（）
        int key=6;
        int index=Arrays.binarySearch(numbers,key);
        System.out.println("\n在排序后的数组中查找"+key+":");
        System.out.println("找到的索引位置："+index);

        //多维数组
        int[][] matrix={{9,5,2},{7,4,8},{1,3,6}};
        System.out.println("\n原始二维数组：");
        print2DArray(matrix);

        //对二维数组的每一行进行排序
        sort2DArray(matrix);
        System.out.println("\n排序后的二维数组（每行排序）：");
        print2DArray(matrix);
    }
}